import java.util.HashMap;
import java.util.Map;

public class Num8 {
    /**
     * 傻逼解法做的我脑瓜子疼，有空重做
     * @param str
     * @return
     */
    public int myAtoi(String str) {
        int res = 0;
        int bg0 = -1;
        boolean haveZero = false;
        for (int i = 0; i < str.length(); i++){
            // 0
            if (str.charAt(i) == 48){
                haveZero = true;
                continue;
            }

            // 空格
            if (str.charAt(i) == 32){
                if (bg0 == -1 && !haveZero){
                    continue;
                }
                break;
            }

            // -
            if (str.charAt(i) == 45){
                if (bg0 == -1 && !haveZero){
                    bg0 = 0;
                    continue;
                }
                break;
            }

            // +
            if (str.charAt(i) == 43){
                if (bg0 == -1 &&  !haveZero){
                    bg0 = 1;
                    continue;
                }
                break;
            }

            if (str.charAt(i) < 48 || str.charAt(i) > 57){
                break;
            }

            Map<Integer, Integer> nums = new HashMap<>();
            for (int j = i, k = 0; j < str.length() && k < str.length() - i; j++, k++){
                if (str.charAt(j) < 48 || str.charAt(j) > 57){
                    break;
                }
                nums.put(k, (bg0 == 1 || bg0 == -1 ? str.charAt(j) - 48 : 48 - str.charAt(j)));
            }

            for (int r = 0; r < nums.size(); r++) {
                if (res > 0 && (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && nums.get(r) > 7))) {
                    return Integer.MAX_VALUE;
                }
                if (res < 0 && (res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && nums.get(r) < -8))) {
                    return Integer.MIN_VALUE;
                }
                res = (res * 10) + nums.get(r);
            }

            return res;
        }

        return res;
    }

    public static void main(String[] args) {
        Num8 num8 = new Num8();
        System.out.println(num8.myAtoi("-91283472332"));
    }
}
